# Time units - seconds is default unit
_s = 1.
_a = 365.25*24.*60.*60.
_d = 24.*60.*60.
_h = 60.*60.
_m = 60.
_ms= 1.0e-3
_us= 1.0e-6
_ns= 1.0e-9

# Energy Units - MeV is default
_MeV = 1.
_KeV = 1.e-3

#import numpy
#ln2 = numpy.log(2.)

# Use 'energy'=None for isotopes that cannot be detected by the alpha detector assuming they
#  are located on the sample.
decays = {
  # Uranium Series
  "U238":[
    {'BR':1.,'type':'alpha','energy':None,'T12':4.468e9*_a,'daughter':"Th234"}
    ],
  "Th234":[
    {'BR':1.,'type':'beta','energy':None,'T12':24.1*_d,'daughter':"Pa234m"}
    ],
  "Pa234m":[
    {'BR':0.9984,'type':'beta','energy':None,'T12':1.16*_m,'daughter':"U234"},
    {'BR':1.-0.9984,'type':'IT','energy':None,'T12':1.16*_m,'daughter':"Pa234"}
    ],
  "Pa234":[
    {'BR':1.,'type':'beta','energy':None,'T12':6.7*_h,'daughter':"U234"}
    ],
  "U234":[
    {'BR':1.,'type':'alpha','energy':None,'T12':2.455e5*_a,'daughter':"Th230"}
    ],
  "Ra226":[
    {'BR':1.,'type':'alpha','energy':None,'T12':1602*_a,'daughter':"Rn222"}
    ],
  "Rn222":[
    {'BR':1.,'type':'alpha','energy':None,'T12':3.8235*_d,'daughter':"Po218"}
    ],
  "Po218":[
    {'BR':0.9998,'type':'alpha','energy':6.002*_MeV,'T12':3.098*_m,'daughter':"Pb214"},
    {'BR':1.-0.9998,'type':'beta','energy':None,'T12':3.098*_m,'daughter':"At218"}
    ],
  "At218":[
    {'BR':1.,'type':'alpha','energy':6.874*_MeV,'T12':1.5*_s,'daughter':"Bi214"}
    ],
  "Pb214":[
    {'BR':1.,'type':'beta','energy':None,'T12':26.8*_m,'daughter':"Bi214"}
    ],
  "Bi214":[
    {'BR':0.9998,'type':'beta','energy':None,'T12':19.9*_m,'daughter':"Po214"},
    {'BR':(1-0.9998)*0.539,'type':'alpha','energy':5.452*_MeV,'T12':19.9*_m,'daughter':"Tl210"},
    {'BR':(1-0.9998)*0.392,'type':'alpha','energy':5.516*_MeV,'T12':19.9*_m,'daughter':"Tl210"},
    {'BR':(1-0.9998)*0.058,'type':'alpha','energy':5.273*_MeV,'T12':19.9*_m,'daughter':"Tl210"},
    ],
  "Po214":[
    {'BR':0.999895,'type':'alpha','energy':7.687*_MeV,'T12':164.3*_us,'daughter':"Pb210"},
    {'BR':1.-0.999895,'type':'alpha','energy':6.902*_MeV,'T12':164.3*_us,'daughter':"Pb210"}
    ],
  "Tl210":[
    {'BR':1.,'type':'beta','energy':None,'T12':1.3*_m,'daughter':"Pb210"}
    ],
  "Pb210":[
    {'BR':1.,'type':'beta','energy':None,'T12':22.2*_a,'daughter':"Bi210"}
    ],
  "Bi210":[
    {'BR':1.,'type':'beta','energy':None,'T12':5.012*_d,'daughter':"Po210"}
    ],
  "Po210":[
    {'BR':1.,'type':'alpha','energy':5.301*_MeV,'T12':138.376*_d,'daughter':None}
    ],
  # --oo00OOO00oo----oo00OOO00oo----oo00OOO00oo----oo00OOO00oo----oo00OOO00oo----oo00OOO00oo--
  # Thorium Series
  "Th232":[
    {'BR':.782,'type':'alpha','energy':4.012*_MeV,'T12':1.405e10*_a,'daughter':"Ra228"},
    {'BR':1.-.782,'type':'alpha','energy':3.947*_MeV,'T12':1.405e10*_a,'daughter':"Ra228"}
    ],
  "Ra228":[
    {'BR':1.,'type':'beta','energy':None,'T12':5.75*_a,'daughter':"Ac228"}
    ],
  "Ac228":[
    {'BR':1.,'type':'beta','energy':None,'T12':6.15*_h,'daughter':"Th228"}
    ],
  "Th228":[
    {'BR':.722,'type':'alpha','energy':5.423*_MeV,'T12':1.9116*_a,'daughter':"Ra224"},
    {'BR':1.-.722,'type':'alpha','energy':5.3404*_MeV,'T12':1.9116*_a,'daughter':"Ra224"}
    ],
  "Ra224":[
    {'BR':.9492,'type':'alpha','energy':5.685*_MeV,'T12':3.6319*_d,'daughter':"Rn220"},
    {'BR':1.-.9492,'type':'alpha','energy':5.449*_MeV,'T12':3.6319*_d,'daughter':"Rn220"}
    ],
  "Rn220":[
    {'BR':.99886,'type':'alpha','energy':6.288*_MeV,'T12':55.6*_s,'daughter':"Po216"},
    {'BR':1.-.99886,'type':'alpha','energy':5.747*_MeV,'T12':55.6*_s,'daughter':"Po216"}
    ],
  "Po216":[
    {'BR':.99981,'type':'alpha','energy':6.778*_MeV,'T12':145.*_ms,'daughter':"Pb212"},
    {'BR':1.-.99981,'type':'alpha','energy':5.985*_MeV,'T12':145.*_ms,'daughter':"Pb212"}
    ],
  "Pb212":[
    {'BR':1.,'type':'beta','energy':None,'T12':10.6*_h,'daughter':"Bi212"},
    ],
  "Bi212":[
    {'BR':.6406,'type':'beta','energy':None,'T12':60.55*_m,'daughter':"Po212"},
    {'BR':(1-.6406)*0.2713,'type':'alpha','energy':6.090*_MeV,'T12':60.55*_m,'daughter':None},
    {'BR':(1-.6406)*0.6992,'type':'alpha','energy':6.051*_MeV,'T12':60.55*_m,'daughter':None},
    {'BR':(1-.6406)*0.0170,'type':'alpha','energy':5.768*_MeV,'T12':60.55*_m,'daughter':None}
    ],
  "Po212":[
    {'BR':1.,'type':'alpha','energy':8.785*_MeV,'T12':299.*_ns,'daughter':None}
    ]
}
  

periodic_table = {}
periodic_table["H"] = 1
periodic_table["He"] = 2
periodic_table["Li"] = 3
periodic_table["Be"] = 4
periodic_table["B"] = 5
periodic_table["C"] = 6
periodic_table["N"] = 7
periodic_table["O"] = 8
periodic_table["F"] = 9
periodic_table["Ne"] = 10
periodic_table["Na"] = 11
periodic_table["Mg"] = 12
periodic_table["Al"] = 13
periodic_table["Si"] = 14
periodic_table["P"] = 15
periodic_table["S"] = 16
periodic_table["Cl"] = 17
periodic_table["Ar"] = 18
periodic_table["K"] = 19
periodic_table["Ca"] = 20
periodic_table["Sc"] = 21
periodic_table["Ti"] = 22
periodic_table["V"] = 23
periodic_table["Cr"] = 24
periodic_table["Mn"] = 25
periodic_table["Fe"] = 26
periodic_table["Co"] = 27
periodic_table["Ni"] = 28
periodic_table["Cu"] = 29
periodic_table["Zn"] = 30
periodic_table["Ga"] = 31
periodic_table["Ge"] = 32
periodic_table["As"] = 33
periodic_table["Se"] = 34
periodic_table["Br"] = 35
periodic_table["Kr"] = 36
periodic_table["Rb"] = 37
periodic_table["Sr"] = 38
periodic_table["Y"] = 39
periodic_table["Zr"] = 40
periodic_table["Nb"] = 41
periodic_table["Mo"] = 42
periodic_table["Tc"] = 43
periodic_table["Ru"] = 44
periodic_table["Rh"] = 45
periodic_table["Pd"] = 46
periodic_table["Ag"] = 47
periodic_table["Cd"] = 48
periodic_table["In"] = 49
periodic_table["Sn"] = 50
periodic_table["Sb"] = 51
periodic_table["Te"] = 52
periodic_table["I"] = 53
periodic_table["Xe"] = 54
periodic_table["Cs"] = 55
periodic_table["Ba"] = 56
periodic_table["La"] = 57
periodic_table["Ce"] = 58
periodic_table["Pr"] = 59
periodic_table["Nd"] = 60
periodic_table["Pm"] = 61
periodic_table["Sm"] = 62
periodic_table["Eu"] = 63
periodic_table["Gd"] = 64
periodic_table["Tb"] = 65
periodic_table["Dy"] = 66
periodic_table["Ho"] = 67
periodic_table["Er"] = 68
periodic_table["Tm"] = 69
periodic_table["Yb"] = 70
periodic_table["Lu"] = 71
periodic_table["Hf"] = 72
periodic_table["Ta"] = 73
periodic_table["W"] = 74
periodic_table["Re"] = 75
periodic_table["Os"] = 76
periodic_table["Ir"] = 77
periodic_table["Pt"] = 78
periodic_table["Au"] = 79
periodic_table["Hg"] = 80
periodic_table["Tl"] = 81
periodic_table["Pb"] = 82
periodic_table["Bi"] = 83
periodic_table["Po"] = 84
periodic_table["At"] = 85
periodic_table["Rn"] = 86
periodic_table["Fr"] = 87
periodic_table["Ra"] = 88
periodic_table["Ac"] = 89
periodic_table["Th"] = 90
periodic_table["Pa"] = 91
periodic_table["U"] = 92
periodic_table["Np"] = 93
periodic_table["Pu"] = 94
periodic_table["Am"] = 95
periodic_table["Cm"] = 96
periodic_table["Bk"] = 97
periodic_table["Cf"] = 98
periodic_table["Es"] = 99
periodic_table["Fm"] = 100
periodic_table["Md"] = 101
periodic_table["No"] = 102
periodic_table["Lr"] = 103

def get_isotope_AZ(iso_string):
    """I prefer Z to be alpha, i.e. Xe, and A as a number
    this takes Ac123 or 123Ac and finds iso_A=123 and iso_Z=Ac
    """
    isotope_AZ = re.findall("\d+|[a-zA-Z]+",iso_string)
    for iso_az in isotope_AZ:
        if iso_az.isdigit():
            iso_A = iso_az
        if iso_az.isalpha():
            iso_Z = iso_az
        A = int(iso_A)
        Z = int(isotopes.periodic_table[iso_Z]) #returns a number, i might change it to return str
    return A,Z

